|
One-Stop Shopping for MBARI Upper Water Column Data : Examples using pydap from Python to access BOG data via DRDS
This page last changed on Jan 08, 2013 by mccann.
Examples using pydap from Python
Please see http://pydap.org/client.html#accessing-sequential-data for where these examples came from. Below are examples accessing our data from elvis.
Print out bottles where DEPTH is greater than 4300:Copy-n-paste into Python session: from pydap.client import open_url # Use PyDAP client library from http://pydap.org/
dataset = open_url('http://elvis.shore.mbari.org/dods/bog/BCTD') # Read data directly from the database via OPeNDAP/DRDS
print dataset.BCTD.keys() # Print column names
my_bottles = dataset.BCTD[(dataset.BCTD.DEPTH > 4300)] # Select bottles that are deeper than 4000
print len(my_bottles['DEPTH']) # Print length of my_bottles list
for d,la,lo,id,t,o in zip(my_bottles.DEPTH, my_bottles.DEC_LAT, my_bottles.DEC_LONG, my_bottles.SITE_ID, my_bottles.TMP, my_bottles.O2):
print d,la,lo,id,t,o
What it looks like when you execute the above: <106 elvis.shore.mbari.org /u/mccann> python
Python 2.4.3 (#1, Jun 11 2009, 14:09:58)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>> from pydap.client import open_url # Use PyDAP client library from http://pydap.org/
>>> dataset = open_url('http://elvis.shore.mbari.org/dods/bog/BCTD') # Read data directly from the database via OPeNDAP/DRDS
>>> print dataset.BCTD.keys() # Print column names
['CTD_BOTTLE_ID', 'CRUISE', 'EXPD', 'SEQ', 'DEPTH', 'BOTTLE', 'PROJECT', 'CTRB_ID', 'PLATFORM', 'RJDAY', 'DATE_TIME', 'JTIME', 'YEAR_DATE',
'DEC_LAT', 'DEC_LONG', 'SITE_ID', 'PRESSURE', 'CHL_GFF', 'PHAEO_GFF', 'FOFA_GFF', 'VF_GFF', 'VE_GFF', 'SENS_GFF', 'FO_GFF', 'FA_GFF', 'FLUOR_RTO',
'CHL_1u', 'PHAEO_1u', 'FOFA_1u', 'VF_1u', 'VE_1u', 'FO_1u', 'FA_1u', 'SENS_1u', 'CHL_5u', 'PHAEO_5u', 'FOFA_5u', 'VF_5u', 'VE_5u', 'SENS_5u', 'FO_5u',
'FA_5u', 'TMP', 'SAL', 'CONDUCT', 'SIG_T', 'PARCOS', 'PAR4PI', 'TRANSMISS', 'CHLA', 'FLUOR', 'NH4', 'NO2', 'NO3', 'SIO4', 'PO4', 'TCO2', 'O2',
'OXY_ML', 'OXY_PS', 'IRRD_490', 'IRRD_520', 'IRRD_555', 'ALTIMETER', 'rdep', 'sal2', 'temp2', 'cond2', 'pot_tmp', 'OxyT', 'OxyC', 'TransV',
'TransBeam', 'POT_TMP2', 'OxyV', 'ISUS_NO3']
>>> my_bottles = dataset.BCTD[(dataset.BCTD.DEPTH > 4300)] # Select bottles that are deeper than 4000
>>> print len(my_bottles['DEPTH']) # Print length of my_bottles list
18
>>> for d,la,lo,id,t,o in zip(my_bottles.DEPTH, my_bottles.DEC_LAT, my_bottles.DEC_LONG, my_bottles.SITE_ID, my_bottles.TMP, my_bottles.O2):
... print d,la,lo,id,t,o
...
4500 35.441 -124.89 67-90 1.5242 nan
4500 35.457 -124.897 67-90 1.5183 nan
4400 35.453 -124.901 67-90 1.5193 nan
4500 35.453 -124.903 67-90 1.5199 nan
4400 35.454 -124.905 67-90 1.5138 nan
4370 35.459 -124.907 67-90 1.5212 nan
4465 36.576 -125.741 60-90 1.5342 nan
4380 35.467 -124.94 67-90 1.5182 nan
4500 35.439 -124.89 67-90 1.5211 nan
4335 35.458 -124.907 67-90 1.5175 nan
4400 35.446 -124.919 67-90 1.5187 nan
4400 35.45 -124.902 67-90 1.5146 nan
4450 35.122 -125.605 67-100 1.5294 nan
4450 35.122 -125.605 67-100 1.5296 nan
4400 35.462 -124.91 67-90 1.5247 nan
4400 35.455 -124.909 67-90 1.516 nan
4500 35.453 -124.903 67-90 1.5253 nan
4400 35.452 -124.911 67-90 1.515 nan
>>>
Print out all bottle data with Salinity less than 28:Copy-n-paste into Python session: from pydap.client import open_url # Use PyDAP client library from http://pydap.org/
dataset = open_url('http://elvis.shore.mbari.org/dods/bog/BCTD') # Read data directly from the database via OPeNDAP/DRDS
print dataset.BCTD.keys() # Print column names
mb = dataset.BCTD[(dataset.BCTD.SAL < 28)] # Select bottles where Salinity is less than 28
print len(mb['DEPTH']) # Print length of my_bottles list
outText = "DATE_TIME, DEPTH, DEC_LAT, DEC_LONG, SITE_ID, TMP, SAL\n" # Column headers
for dt,d,la,lo,id,t,s in zip(mb.DATE_TIME, mb.DEPTH, mb.DEC_LAT, mb.DEC_LONG, mb.SITE_ID, mb.TMP, mb.SAL):
outText = outText + "%s, %s, %s, %s, %s, %s, %s\n" % (dt, d, la, lo, id, t, s) # Collect the data
print outText
What it looks like when you execute the above:
>>> from pydap.client import open_url # Use PyDAP client library from http://pydap.org/
>>> dataset = open_url('http://elvis.shore.mbari.org/dods/bog/BCTD') # Read data directly from the database via OPeNDAP/DRDS
>>> print dataset.BCTD.keys() # Print column names
['CTD_BOTTLE_ID', 'CRUISE', 'EXPD', 'SEQ', 'DEPTH', 'BOTTLE', 'PROJECT', 'CTRB_ID', 'PLATFORM', 'RJDAY', 'DATE_TIME', 'JTIME',
'YEAR_DATE', 'DEC_LAT', 'DEC_LONG', 'SITE_ID', 'PRESSURE', 'CHL_GFF', 'PHAEO_GFF', 'FOFA_GFF', 'VF_GFF', 'VE_GFF', 'SENS_GFF',
'FO_GFF', 'FA_GFF', 'FLUOR_RTO', 'CHL_1u', 'PHAEO_1u', 'FOFA_1u', 'VF_1u', 'VE_1u', 'FO_1u', 'FA_1u', 'SENS_1u', 'CHL_5u',
'PHAEO_5u', 'FOFA_5u', 'VF_5u', 'VE_5u', 'SENS_5u', 'FO_5u', 'FA_5u', 'TMP', 'SAL', 'CONDUCT', 'SIG_T', 'PARCOS', 'PAR4PI',
'TRANSMISS', 'CHLA', 'FLUOR', 'NH4', 'NO2', 'NO3', 'SIO4', 'PO4', 'TCO2', 'O2', 'OXY_ML', 'OXY_PS', 'IRRD_490', 'IRRD_520',
'IRRD_555', 'ALTIMETER', 'rdep', 'sal2', 'temp2', 'cond2', 'pot_tmp', 'OxyT', 'OxyC', 'TransV', 'TransBeam', 'POT_TMP2',
'OxyV', 'ISUS_NO3']
>>> mb = dataset.BCTD[(dataset.BCTD.SAL < 28)] # Select bottles where Salinity is less than 28
>>> print len(mb['DEPTH']) # Print length of my_bottles list
19
>>> outText = "DATE_TIME, DEPTH, DEC_LAT, DEC_LONG, SITE_ID, TMP, SAL\n" # Column headers
>>> for dt,d,la,lo,id,t,s in zip(mb.DATE_TIME, mb.DEPTH, mb.DEC_LAT, mb.DEC_LONG, mb.SITE_ID, mb.TMP, mb.SAL):
... outText = outText + "%s, %s, %s, %s, %s, %s, %s\n" % (dt, d, la, lo, id, t, s) # Collect the data
...
>>> print outText
DATE_TIME, DEPTH, DEC_LAT, DEC_LONG, SITE_ID, TMP, SAL
2007-01-28 02:15:37.0, 10, 37.555, -122.191, 38, 9.0597, 27.5771
2007-01-28 02:15:37.0, 10, 37.555, -122.191, 38, 9.0607, 27.5745
2007-01-28 02:42:04.0, 10, 37.569, -122.219, 39, 9.093, 27.7954
2007-01-28 02:42:04.0, 10, 37.569, -122.219, 39, 9.0929, 27.7957
2007-01-28 03:04:38.0, 10, 37.58, -122.244, 40, 9.1872, 27.994
2007-01-28 03:04:38.0, 10, 37.58, -122.244, 40, 9.1877, 27.9945
2007-01-28 11:13:18.0, 0, 37.978, -122.43, 54, 9.1868, 25.3831
2007-01-28 11:36:34.0, 0, 38.007, -122.404, 55, 9.2646, 25.4848
2007-01-28 11:57:32.0, 5, 38.028, -122.37, 56, 9.3301, 26.1335
2007-01-28 11:57:32.0, 5, 38.028, -122.37, 56, 9.3298, 26.1474
2007-01-28 12:53:28.0, 20, 38.062, -122.263, 58, 9.1294, 24.1165
2007-01-28 12:53:28.0, 20, 38.062, -122.263, 58, 9.1296, 24.1172
2007-01-28 12:28:13.0, 5, 38.051, -122.313, 57, 9.2559, 25.5208
2007-01-28 12:28:13.0, 5, 38.051, -122.313, 57, 9.2593, 25.5637
2006-04-17 08:33:43.0, 10, 47.775, -124.648, 13.3 -2.0, 10.22, 27.4995
2006-04-17 08:33:43.0, 5, 47.775, -124.648, 13.3 -2.0, 10.2026, 27.4343
2006-04-17 08:33:43.0, 0, 47.775, -124.648, 13.3 -2.0, 10.1847, 27.4071
2006-04-19 00:13:59.0, 5, 46.429, -124.222, 20.0 3.0, 10.3676, 23.8885
2006-04-19 00:13:59.0, 0, 46.429, -124.222, 20.0 3.0, 10.8401, 21.1543
Plot profiles of bottle data from near mooring M2 (a slightly more complex example using the Matplotlib package):Copy-n-paste into Python session: from pydap.client import open_url # Use PyDAP client library from http://pydap.org/
from pylab import * # Use Matlab-like plotting module
dataset = open_url('http://elvis.shore.mbari.org/dods/bog/BCTD') # Read data directly from the database via OPeNDAP/DRDS
# From using Google Earth to get bounding box around M2's location: BBOX=-122.413310,36.673487,-122.357704,36.7042573
m2bottles = dataset.BCTD[
(dataset.BCTD.DEC_LONG > -122.413310) &
(dataset.BCTD.DEC_LONG < -122.357704) &
(dataset.BCTD.DEC_LAT > 36.673487) &
(dataset.BCTD.DEC_LAT < 36.7042573) ]
# Loop through query results and build dictionary keyed on profile (DATE_TIME is a useful proxy)
# Create a dictionaries of lists for thess data structures
depthList = dict()
oxyList = dict()
for dt in m2bottles.DATE_TIME:
depthList[dt] = list()
oxyList[dt] = list()
# Now append to these lists. This creates the 'arrays' that we can pass to the plot routine.
for (dt,d,o) in (zip(m2bottles.DATE_TIME, m2bottles.DEPTH, m2bottles.OXY_ML)):
depthList[dt].append(d)
oxyList[dt].append(o)
# Order the time list
dtList = depthList.keys()
dtList.sort()
# Plot point from the profiles in time order
# To make it a little interesting color code the points for before and after the year 2000
fig = figure()
for dt in dtList:
print "Plotting profile collected on " + dt
print oxyList[dt], depthList[dt]
if int(dt[0:4]) > 2000:
plot(oxyList[dt], depthList[dt], 'b*')
else:
plot(oxyList[dt], depthList[dt], 'r*')
#axis([0, 9, 0, 1200])
ax = gca()
ax.set_ylim(ax.get_ylim()[::-1]) # Reverse the depth axis
xlabel('Oxygen (ml/l)')
ylabel('Depth (m)')
title("Mooring M2 Bottle Data: " + dtList[0].split(' ')[0] + " to " + dtList[-1].split(' ')[0])
text(5, 800, 'Blue: Before year 2000\nRed: After Year 2000')
show()
fig.savefig("M2_oxy.png")
Produces this figure:
And the output of the above set of python commands:
<121 elvis.shore.mbari.org /u/ssdsadmin> python
Python 2.4.3 (#1, Jun 11 2009, 14:09:58)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pydap.client import open_url # Use PyDAP client library from http://pydap.org/
>>> from pylab import * # Use Matlab-like plotting module
>>> dataset = open_url('http://elvis.shore.mbari.org/dods/bog/BCTD') # Read data directly from the database via OPeNDAP/DRDS
>>> # From using Google Earth to get bounding box around M2's location: BBOX=-122.413310,36.673487,-122.357704,36.7042573
... m2bottles = dataset.BCTD[
... (dataset.BCTD.DEC_LONG > -122.413310) &
... (dataset.BCTD.DEC_LONG < -122.357704) &
... (dataset.BCTD.DEC_LAT > 36.673487) &
... (dataset.BCTD.DEC_LAT < 36.7042573) ]
>>>
>>> # Loop through query results and build dictionary keyed on profile (DATE_TIME is a useful proxy)
... # Create a dictionaries of lists for thess data structures
... depthList = dict()
>>> oxyList = dict()
>>> for dt in m2bottles.DATE_TIME:
... depthList[dt] = list()
... oxyList[dt] = list()
...
>>> # Now append to these lists. This creates the 'arrays' that we can pass to the plot routine.
... for (dt,d,o) in (zip(m2bottles.DATE_TIME, m2bottles.DEPTH, m2bottles.OXY_ML)):
... depthList[dt].append(d)
... oxyList[dt].append(o)
...
>>> # Plot point from the profiles in time order, color code according to date
... dtList = depthList.keys()
>>> dtList.sort()
>>>
>>> fig = figure()
>>> for dt in dtList:
... print "Plotting profile collected on " + dt
... print oxyList[dt], depthList[dt]
... if int(dt[0:4]) > 2000:
... plot(oxyList[dt], depthList[dt], 'b*')
... else:
... plot(oxyList[dt], depthList[dt], 'r*')
... #axis([0, 9, 0, 1200])
... ax = gca()
... ax.set_ylim(ax.get_ylim()[::-1]) # Reverse the depth axis
...
Plotting profile collected on 1993-03-10 21:46:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9ac3f8c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1993-07-21 19:41:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9ada84c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1993-10-06 19:50:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9adaa4c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1993-10-27 18:46:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9adac4c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1993-11-23 21:18:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9adae4c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1993-12-15 21:01:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9adaeac>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1993-12-29 18:23:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9ae326c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1994-01-26 20:03:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 200]
[<matplotlib.lines.Line2D object at 0x9ae346c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1994-02-23 19:03:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9ae366c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1994-03-09 19:53:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9ae386c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1994-03-23 20:45:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9ae3a6c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1994-04-13 18:44:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9ae3c6c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1994-05-18 18:12:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [5, 10, 20, 30, 40, 60, 80, 100, 150, 200, 0]
[<matplotlib.lines.Line2D object at 0x9ae3e6c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1994-06-29 18:50:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9ae3ecc>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1994-07-20 18:57:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9aeb28c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1994-08-11 20:01:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9aeb48c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1994-09-28 19:43:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9aeb68c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1994-10-19 18:33:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9aeb88c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1994-12-21 19:02:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9aeba8c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1995-02-09 00:03:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9aebc8c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1995-03-01 20:27:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9aebe8c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1995-03-15 19:09:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9aebeec>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1995-03-29 20:43:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [10, 20, 30, 40, 60, 80, 100, 150, 200, 0, 5]
[<matplotlib.lines.Line2D object at 0x9af22ac>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1995-04-23 04:12:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9af24ac>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1995-05-02 20:27:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9af26ac>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1995-05-24 19:52:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9af28ac>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1995-06-14 21:06:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9af2aac>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1995-06-28 18:09:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9af2cac>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1995-07-12 18:45:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [20, 30, 40, 60, 80, 100, 150, 200, 0, 5, 10]
[<matplotlib.lines.Line2D object at 0x9af2eac>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1995-07-26 20:24:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 200]
[<matplotlib.lines.Line2D object at 0x9af2f0c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1995-08-09 18:46:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 200]
[<matplotlib.lines.Line2D object at 0x9b422cc>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1995-08-23 17:57:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b424cc>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1995-09-13 20:36:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b426cc>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1995-09-27 18:58:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b428cc>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1995-10-11 19:18:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b42acc>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1995-10-25 19:01:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b42ccc>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1995-11-15 19:40:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b42ecc>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1996-01-03 19:46:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b42f2c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1996-02-14 20:53:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b4a2ec>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1996-04-03 20:41:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b4a4ec>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1996-06-06 00:35:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b4a6ec>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1996-08-06 18:57:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b4a8ec>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1996-08-27 19:51:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b4aaec>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1996-09-17 19:29:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b4acec>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1996-10-09 18:37:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b4aeec>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1996-10-30 20:40:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b4af4c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1997-03-04 22:30:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 40, 60, 80, 100, 150, 700, 200]
[<matplotlib.lines.Line2D object at 0x9b5230c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1997-05-07 19:02:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 15, 20, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b5250c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1997-06-03 13:45:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [100, 150, 200, 300, 400, 500, 600, 700, 800, 900, 1000, 80]
[<matplotlib.lines.Line2D object at 0x9b5270c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1997-06-03 15:09:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 0, 5, 5, 10, 10, 20, 20, 30, 30, 40, 60]
[<matplotlib.lines.Line2D object at 0x9b5290c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1997-06-18 19:31:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 60, 80, 100, 200, 500]
[<matplotlib.lines.Line2D object at 0x9b52b0c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1997-07-29 11:25:00.0
[nan, nan, nan, nan] [0, 0, 1000, 1000]
[<matplotlib.lines.Line2D object at 0x9b52d0c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1997-07-30 18:33:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b52f0c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1997-08-11 19:28:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [5, 10, 20, 30, 40, 60, 80, 100, 150, 200, 0]
[<matplotlib.lines.Line2D object at 0x9b52f6c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1997-10-22 18:33:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b5932c>]
(0.059999999999999998, -0.059999999999999998)
Plotting profile collected on 1997-11-12 19:28:00.0
[nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan] [0, 5, 10, 20, 30, 40, 60, 80, 100, 150, 200]
[<matplotlib.lines.Line2D object at 0x9b5952c>]
(-0.059999999999999998, 0.059999999999999998)
Plotting profile collected on 1998-01-22 02:17:00.0
(long lines from original output removed)
[<matplotlib.lines.Line2D object at 0x9c4a50c>]
(1200.0, 0.0)
>>>
>>> xlabel('Oxygen (ml/l)')
<matplotlib.text.Text object at 0x997836c>
>>> ylabel('Depth (m)')
<matplotlib.text.Text object at 0x9978dac>
>>> title("Mooring M2 Bottle Data: " + dtList[0].split(' ')[0] + " to " + dtList[-1].split(' ')[0])
<matplotlib.text.Text object at 0x9ab57ac>
>>> text(5, 800, 'Blue: Before year 2000\nRed: After Year 2000')
<matplotlib.text.Text object at 0x987ee6c>
>>>
>>> show()
>>>
>>> fig.savefig("M2_oxy.png")
|
| Document generated by Confluence on Feb 04, 2026 08:40 |